﻿using Microsoft.Xna.Framework;


namespace DKE_Kinect.Entwicklung.Core
{
    /// <summary>
    /// Grundklasse für die übergeorndeten Manager
    /// </summary>
    public abstract class BaseManager
    {
        /// <summary>
        /// Aktuelle Spielinstanz für Zugriff auf andere Manager
        /// </summary>
        protected Application pParent;

        /// <summary>
        /// Zugriff auf aktuelle Spielinstanz an die der Manager gebunden ist.
        /// </summary>
        public virtual Application Application
        {
            get { return pParent; }
        }
        /// <summary>
        /// Konstruktor. Erstellt eine Instanz des Managers und weist die aktuelle Spielinstanz als Takgeber zu 
        /// </summary>
        /// <param name="_game">Aktuelle Spielinstanz</param>
        public BaseManager(Application _game)
        {
            pParent = _game;
        }

        /// <summary>
        /// Update Zyklus: Wird kontinuirlich von der Game Klasse getriggert um Logik zu berechnen
        /// </summary>
        /// <param name="_gameTime">Spielzeit Objekt mit Zeit seit letzem Update, Gesamtlaufzeit u.Ä.</param>
        public abstract void Update(GameTime _gameTime);

        /// <summary>
        /// Draw Zyklus: Wird kontinuirlich getrigger von der Game Klasse. Dient zum zeichnen des Screens
        /// </summary>
        /// <param name="_gameTime">Spielzeit Objekt mit Zeit seit letzem Update, Gesamtlaufzeit u.Ä.</param>
        public abstract void Draw(GameTime _gameTime);
    }
}
